home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 09 - 1993 / 09.07 Jul 93 / Bedrock Header Files / Support Includes / BRStr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-19  |  14.0 KB  |  297 lines  |  [TEXT/MPS ]

  1. /*========================================================================================
  2. /      File:        BRStr.h
  3. /      Release Version:    $ 1.0d1 $
  4. /      Creation Date:    November 4, 1989
  5. /      COPYRIGHT 1989-93 SYMANTEC CORPORATION. ALL RIGHTS RESERVED. UNPUBLISHED -- RIGHTS
  6. /      RESERVED UNDER THE COPYRIGHT LAWS OF THE UNITED STATES. USE OF COPYRIGHT NOTICE IS
  7. /      PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION OR DISCLOSURE.
  8. /      THIS SOFTWARE CONTAINS PROPRIETARY AND CONFIDENTIAL INFORMATION OF SYMANTEC
  9. /      CORPORATION. USE, DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
  10. /      EXPRESS WRITTEN PERMISSION OF SYMANTEC CORPORATION.
  11. /      RESTRICTED RIGHTS LEGEND
  12. /      Use, duplication, or disclosure by the Government is subject to restrictions as Set
  13. /      forth in subparagraph (c)(l)(ii) of the Rights in Technical Data and Computer
  14. /      Software clause at DFARS 252.227-7013. Symantec Corporation, 10201 Torre Avenue,
  15. /      Cupertino, CA 95014.
  16. /=======================================================================================*/
  17.  
  18. /*--------------------------------------------------------------------------------------
  19. //    This file is part of the old international implementation.
  20. //    The Bedrock team is in the process of designing a totally new approach.
  21. //    For more details on the new approach please look in the 
  22. //    "…:BEDROCK:INTL:INCLUDES:" folder.
  23. //    The new approach departs from the close tie to characters and characterSets.
  24. //    Instead it bases all internationalization efforts on locale based
  25. //    characters, and character sets, with Unicode as the central set.
  26. /--------------------------------------------------------------------------------------*/
  27.  
  28.  
  29. #ifndef BRSTR_H
  30. #define BRSTR_H
  31.  
  32. #ifndef BRSUPDEF_H
  33. #include "BRSupDef.h"
  34. #endif
  35.  
  36. #ifdef __cplusplus
  37.   extern "C" {
  38. #endif
  39.  
  40.  
  41.  
  42. #define BR_BEDSTRING_LENGTHCOUNT 2
  43. #define BR_BEDSTRING_OVERHEAD 4
  44.  
  45. #if (BR_BEDSTRING_LENGTHCOUNT == 2)
  46. #define BR_BEDSTRING_SETCOUNT(string,cnt) {*(unsigned short FAR *)(string)=(unsigned short)(cnt);}
  47. #define BR_BEDSTRING_GETCOUNT(string) ((unsigned short)*(unsigned short FAR *)(string))
  48. #else
  49. #define BR_BEDSTRING_SETCOUNT(string,cnt) {*(unsigned char FAR *)(string)=(unsigned char)(cnt);}
  50. #define BR_BEDSTRING_GETCOUNT(string) ((unsigned short)*(unsigned char FAR *)(string))
  51. #endif
  52.  
  53. #define BR_TEXTSET_SBCS 1
  54. #define BR_TEXTSET_DBCS 2
  55. #define BR_TEXTSET_MBCS 3
  56.  
  57. #define BR_TEXTSET BR_TEXTSET_SBCS
  58.  
  59. #if (BR_TEXTSET == BR_TEXTSET_SBCS)
  60. #define BR_StringByteLength(string,count) (count)
  61. #define BR_FullStringCharacterCount(string,len) (len)
  62. #else
  63. #if (BR_TEXTSET == BR_TEXTSET_DBCS)
  64. #define BR_StringByteLength(string,count) (count*2)
  65. #define BR_FullStringCharacterCount(string,len) (len/2)
  66. #else
  67. /* Must be MBCS, use procedures to count */
  68. #define BR_StringByteLength(string,count) ERROR_FUNCTION_MISSING
  69. #define BR_FullStringCharacterCount(string,len) ERROR_FUNCTION_MISSING
  70. #endif
  71. #endif
  72.  
  73. typedef unsigned short BR_ParseTokenType;
  74. typedef unsigned short BR_ParseTokenClass;
  75. typedef BR_StringPtr BR_ParseTokenPtr;
  76. typedef unsigned short BR_ParseTokenCount;
  77.  
  78. typedef struct BR_SParsingToken
  79.    {
  80.    BR_ParseTokenType fTokenType;
  81.    BR_ParseTokenClass fTokenClass;
  82.    BR_ParseTokenPtr fTokenPtr;
  83.    BR_ParseTokenCount fTokenCount;
  84.    } BR_SParsingToken, FAR * BR_SParsingTokenPtr;
  85.  
  86. typedef enum BR_ParseClass
  87. {
  88.     BR_ParseClass_kString,
  89.     BR_ParseClass_kRun
  90. } BR_ParseClass;
  91.  
  92. typedef struct BR_SParseList
  93.    {
  94.    BR_ParseTokenPtr fParseStr;
  95.    BR_ParseTokenCount fParseCnt;
  96.    BR_ParseTokenType fParseType;
  97.    BR_ParseClass fParseClass;
  98.    } BR_SParseList, FAR * BR_SParseListPtr;
  99. /* String Procedures */
  100.  
  101. typedef unsigned short BS_StringLength;
  102. /* Each of the string Copy procedures Copy str2 to str1, i.e. str1=str2; */
  103.  
  104. BR_EXPORTENTRY(char FAR *) BR_ByteMemoryMove (char FAR *  str1, char FAR *  str2, unsigned short len);
  105. BR_EXPORTENTRY(BR_StringPtr) BR_MemoryMove      (BR_StringPtr str1, BR_StringPtr str2, BS_StringLength cnt);
  106.  
  107. BR_EXPORTENTRY(BR_BedString) BR_CopyToBedString (BR_BedString str1, BR_StringPtr str2, BS_StringLength cnt);
  108. BR_EXPORTENTRY(BR_AnsiString) BR_CopyToAnsiString   (BR_AnsiString   str1, BR_StringPtr str2, BS_StringLength cnt);
  109. BR_EXPORTENTRY(BR_PascalString) BR_CopyToPascalString   (BR_PascalString   str1, BR_StringPtr str2, BS_StringLength cnt);
  110.  
  111. BR_EXPORTENTRY(BR_BedString) BR_CopyPascalStringToBedString (BR_BedString str1, BR_PascalString str2);
  112. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringCopy          (BR_PascalString   str1, BR_PascalString str2);
  113. BR_EXPORTENTRY(BR_AnsiString) BR_PascalStringToAnsiStringCopy   (BR_AnsiString   str1, BR_PascalString str2);
  114.  
  115. BR_EXPORTENTRY(BR_BedString) BR_AnsiStringToBedStringCopy (BR_BedString str1, BR_AnsiString str2);
  116. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringCopy          (BR_AnsiString   str1, BR_AnsiString str2);
  117. BR_EXPORTENTRY(BR_PascalString) BR_AnsiStringToPascalStringCopy   (BR_PascalString   str1, BR_AnsiString str2);
  118.  
  119. BR_EXPORTENTRY(BR_BedString) BR_ModulaStringToBedStringCopy (
  120.     unsigned short str1Max,
  121.     BR_BedString str1,
  122.     unsigned short str2Max,
  123.     BR_StringPtr str2);
  124.  
  125. BR_EXPORTENTRY(BR_BedString) BR_BedStringCopy         (BR_BedString str1, BR_BedString str2);
  126. BR_EXPORTENTRY(BR_PascalString) BR_BedStringToPascalStringCopy (BR_PascalString   str1, BR_BedString str2);
  127. BR_EXPORTENTRY(BR_AnsiString) BR_BedStringToAnsiStringCopy (BR_AnsiString   str1, BR_BedString str2);
  128.  
  129. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringConcatenate (BR_PascalString   str1, BR_PascalString   str2);
  130. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringConcatenate (BR_AnsiString   str1, BR_AnsiString   str2);
  131. BR_EXPORTENTRY(BR_BedString) BR_BedStringConcatenate  (BR_BedString str1, BR_BedString str2);
  132.  
  133. typedef short BR_StringCompareResult;
  134.  
  135. BR_EXPORTENTRY(BR_StringCompareResult) BR_StringCompare (BR_StringPtr  str1, BS_StringLength cnt1, BR_StringPtr str2, BS_StringLength cnt2);
  136. BR_EXPORTENTRY(BR_StringCompareResult) BR_PascalStringCompare  (BR_PascalString   str1, BR_PascalString   str2);
  137. BR_EXPORTENTRY(BR_StringCompareResult) BR_AnsiStringCompare  (BR_AnsiString   str1, BR_AnsiString   str2);
  138. BR_EXPORTENTRY(BR_StringCompareResult) BR_BedStringCompare   (BR_BedString str1, BR_BedString str2);
  139.  
  140. BR_EXPORTENTRY(BR_StringCompareResult) BR_StringCompareIgnoreCase (BR_StringPtr    str1, BS_StringLength cnt1, BR_StringPtr str2, BS_StringLength cnt2);
  141. BR_EXPORTENTRY(BR_StringCompareResult) BR_BedStringCompareIgnoreCase   (BR_BedString str1, BR_BedString str2);
  142. BR_EXPORTENTRY(BR_StringCompareResult) BR_PascalStringCompareNoCase  (BR_PascalString    str1, BR_PascalString   str2);
  143. BR_EXPORTENTRY(BR_StringCompareResult) BR_AnsiStringCompareIgnoreCase  (BR_AnsiString    str1, BR_AnsiString   str2);
  144.  
  145. BR_EXPORTENTRY(BR_PascalString) BR_AnsiStringToPascalString   (BR_AnsiString   str1); /*C str to Pascal str*/
  146. BR_EXPORTENTRY(BR_PascalString) BR_BedStringToPascalString      (BR_BedString str1); /*Bedrock str to Pascal str*/
  147. BR_EXPORTENTRY(BR_AnsiString) BR_BedStringToAnsiString      (BR_BedString str1); /*Bedrock str to C str*/
  148. BR_EXPORTENTRY(BR_AnsiString) BR_PascalStringToAnsiString   (BR_PascalString   str1); /*Pascal str to C str*/
  149. BR_EXPORTENTRY(BR_BedString) BR_AnsiStringToBedString (BR_AnsiString   str1); /*C str to Bedrock str*/
  150. BR_EXPORTENTRY(BR_BedString) BR_PascalStringToBedString (BR_PascalString   str1); /*Pascal str to Bedrock str*/
  151.  
  152. BR_EXPORTENTRY(unsigned short) BR_PascalStringByteLen  (BR_PascalString   str1);   /*Get physical length of str*/
  153. BR_EXPORTENTRY(unsigned short) BR_AnsiStringByteLen  (BR_AnsiString   str1);
  154. BR_EXPORTENTRY(unsigned short) BR_BedStringByteLen   (BR_BedString str);
  155. /*BR_EXPORTENTRY(unsigned short)  BR_StringByteLength (BR_StringPtr str1, BS_StringLength cnt);*/
  156.  
  157. BR_EXPORTENTRY(BS_StringLength) BR_PascalStringCount (BR_PascalString   str1);     /*Get character count of str*/
  158. BR_EXPORTENTRY(BS_StringLength) BR_AnsiStringCount (BR_AnsiString   str1);
  159. BR_EXPORTENTRY(BS_StringLength) BR_BedStringCount  (BR_BedString str);
  160.  
  161. BR_EXPORTENTRY(void) BR_SetPascalStringByteLength   (BR_PascalString   str, unsigned short len);
  162. BR_EXPORTENTRY(void) BR_SetAnsiStringByteLength   (BR_AnsiString   str, unsigned short len);
  163. BR_EXPORTENTRY(void) BR_SetBedStringByteLength (BR_BedString str, unsigned short len);
  164.  
  165. BR_EXPORTENTRY(void) BR_SetPascalStringCount     (BR_PascalString   str, BS_StringLength cnt);
  166. BR_EXPORTENTRY(void) BR_SetAnsiStringCount     (BR_AnsiString   str, BS_StringLength cnt);
  167. BR_EXPORTENTRY(void) BR_SetBedStringCount (BR_BedString str, BS_StringLength cnt);
  168.  
  169. /*
  170.    These functions insert str2 into str1 at the insertnumber given replacing
  171.    the insert marker with the str2 string. %%{number} is an insertion marker.
  172.  
  173.    Ex. str1 = "Greetings %%1, you are %%2 fYears old."
  174.        s2a = "Robert"
  175.        s2b = "28"
  176.        BR_BedStringSubstitute (str1, s2a, 1);
  177.       result after call: str1 = "Greetings Robert, you are %%2 fYears old."
  178.        BR_BedStringSubstitute (str1, s2b, 2);
  179.       result after call: str1 = "Greetings Robert, you are 28 fYears old."
  180.  
  181.    These functions should be used for ALL string insertions to allow for easy
  182.    internationalization of the strings.
  183. */
  184.  
  185. BR_EXPORTENTRY(BR_StringPtr) BR_StringSubstitute (BR_StringPtr str1, BS_StringLength cnt1,
  186.                  BR_StringPtr str2, BS_StringLength cnt2,
  187.                  short insertnumber, BS_StringLength FAR * newcnt );
  188. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringSubstitute (BR_PascalString str1, BR_PascalString str2, short insertNumber);
  189. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringSubstitute (BR_AnsiString str1, BR_AnsiString str2, short insertNumber);
  190. BR_EXPORTENTRY(BR_BedString) BR_BedStringSubstitute (BR_BedString str1, BR_BedString str2, short insertNumber);
  191.  
  192. /*
  193.    These functions will insert string 2 into string 1 after the character
  194.    specified by the given position pos.  To insert at the beginning of the
  195.    string use the Value 0 for the position.
  196.    Note C string users: the position is character position not array position,
  197.             i.e. the first character is position 1 not 0.
  198. */
  199.  
  200. BR_EXPORTENTRY(BR_StringPtr) BR_StringInsert (BR_StringPtr str1, BS_StringLength cnt1,
  201.                   BR_StringPtr str2, BS_StringLength cnt2, unsigned short pos );
  202. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringInsert (BR_PascalString str1, BR_PascalString str2, unsigned short pos);
  203. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringInsert (BR_AnsiString str1, BR_AnsiString str2, unsigned short pos);
  204. BR_EXPORTENTRY(BR_BedString) BR_BedStringInsert (BR_BedString str1, BR_BedString str2, unsigned short pos);
  205.  
  206. BR_EXPORTENTRY(BR_StringPtr) BR_ConcatenateStringCharacter (BR_StringPtr str, BS_StringLength cnt, BR_StringCharacter c);
  207. BR_EXPORTENTRY(void) BR_BedStrConcatStringCharacter (BR_BedString str, BR_StringCharacter c);
  208.  
  209. BR_EXPORTENTRY(BR_Boolean) BR_FindString (BR_StringPtr FAR * baseStr, BS_StringLength baseCnt,
  210.             BR_StringPtr locStr, BS_StringLength locCnt, BR_Boolean flCaseSensitive);
  211.  
  212. BR_EXPORTENTRY(BR_VMHandle) BR_TokenizeFromList (BR_StringPtr str, BS_StringLength len, unsigned short FAR * count,
  213.                     BR_SParseListPtr pList, unsigned short listCount);
  214. /* String Case operators */
  215.  
  216. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringUpperCase (BR_PascalString str1);
  217. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringUpperCase (BR_AnsiString str1);
  218. BR_EXPORTENTRY(BR_BedString) BR_BedStringUpperCase (BR_BedString str1);
  219. BR_EXPORTENTRY(BR_StringPtr) BR_StringUpperCase (BR_StringPtr str1, BS_StringLength cnt);
  220.  
  221. BR_EXPORTENTRY(BR_PascalString) BR_PascalStringLowerCase (BR_PascalString str1);
  222. BR_EXPORTENTRY(BR_AnsiString) BR_AnsiStringLowerCase (BR_AnsiString str1);
  223. BR_EXPORTENTRY(BR_BedString) BR_BedStringLowerCase (BR_BedString str1);
  224. BR_EXPORTENTRY(BR_StringPtr) BR_StringLowerCase (BR_StringPtr str1, BS_StringLength cnt);
  225.  
  226.  
  227. /* Number conversion procedures */
  228. BR_EXPORTENTRY(BS_StringLength) BR_NumberToString (
  229.     long num, 
  230.     unsigned short base,
  231.     BR_StringPtr  s,
  232.     unsigned short maxlen);
  233. BR_EXPORTENTRY(BR_Boolean) BR_StringToNumber (
  234.     BR_StringPtr  s,
  235.     BS_StringLength characterCnt, 
  236.     unsigned short base, 
  237.     long FAR * num);
  238. BR_EXPORTENTRY(BS_StringLength) BR_PositiveNumberToString (
  239.     unsigned long num,
  240.     unsigned short base,
  241.     BR_StringPtr s,
  242.     unsigned short maxlen);
  243. BR_EXPORTENTRY(BR_Boolean) BR_StringToPositiveNumber (
  244.     BR_StringPtr  s,
  245.     BS_StringLength characterCnt,
  246.     unsigned short base,
  247.     unsigned long FAR * num);
  248. BR_EXPORTENTRY(short) BR_StringToShort (BR_StringPtr  str1, BS_StringLength characterCnt);
  249. BR_EXPORTENTRY(long) BR_StringToLong (BR_StringPtr  str1, BS_StringLength characterCnt);
  250. BR_EXPORTENTRY(BS_StringLength) BR_ShortToString (BR_StringPtr str1, short maxlen, short num);
  251. BR_EXPORTENTRY(BS_StringLength) BR_LongToString (BR_StringPtr str1, short maxlen, long num);
  252. BR_EXPORTENTRY(BS_StringLength) BR_ShortToHexString (BR_StringPtr str1, short maxlen, short num);
  253. BR_EXPORTENTRY(BS_StringLength) BR_LongToHexString (BR_StringPtr str1, short maxlen, long num);
  254. BR_EXPORTENTRY(long) BR_RomanStringToLong (BR_StringPtr str1, BS_StringLength cnt);
  255. BR_EXPORTENTRY(short) BR_RomanStringToShort (BR_StringPtr str1, BS_StringLength cnt);
  256.  
  257. BR_EXPORTENTRY(BS_StringLength) BR_LongToRomanString (
  258.     BR_StringPtr str1,
  259.     unsigned short maxlen,
  260.     long num,
  261.     BR_Boolean isUpperCase);
  262. BR_EXPORTENTRY(BS_StringLength) BR_ShortToRomanString (
  263.     BR_StringPtr str1,
  264.     unsigned short maxlen,
  265.     short num,
  266.     BR_Boolean isUpperCase);
  267.  
  268.  
  269. BR_EXPORTENTRY(short) BR_BedStringToShort (BR_BedString str1);
  270. BR_EXPORTENTRY(long) BR_BedStringToLong (BR_BedString str1);
  271. BR_EXPORTENTRY(BR_BedString) BR_ShortToBedString (BR_BedString str1, short num);
  272. BR_EXPORTENTRY(BR_BedString) BR_LongToBedString (BR_BedString str1, long num);
  273. BR_EXPORTENTRY(short) BR_RomanBedStringToShort (BR_BedString str1);
  274. BR_EXPORTENTRY(long) BR_RomanBedStringToLong (BR_BedString str1);
  275. BR_EXPORTENTRY(BR_BedString) BR_ShortToRomanBedString (BR_BedString str1, short num, BR_Boolean isUpperCase);
  276. BR_EXPORTENTRY(BR_BedString) BR_LongToRomanBedString (BR_BedString str1, long num, BR_Boolean isUpperCase);
  277. BR_EXPORTENTRY(BR_BedString) BR_ShortToHexBedString (BR_BedString str1, short num);
  278. BR_EXPORTENTRY(BR_BedString) BR_LongToHexBedString (BR_BedString str1, long num);
  279.  
  280. #ifdef BR_BUILD_PM
  281. BR_EXPORTENTRY(short) BedGetStrResource (HBEDANCHOR hab, unsigned long myType, unsigned long id,
  282.                         unsigned short maxSize, BR_BedString text);
  283. #endif
  284.  
  285.  
  286. #ifdef __cplusplus
  287.    }
  288. #endif
  289.  
  290. #endif
  291.